package com.dragon.common.base.utils;

import org.springframework.beans.BeanUtils;

/**
 * @author Chris Chan
 * Create On 2025/8/27 下午12:47
 * Use for: 转换工具类
 * Explain:
 */
public class ConvertUtil {
    /**
     * 复制属性
     *
     * @param source 源对象
     * @param target 目标对象
     */
    public static void copyProperties(Object source, Object target) {
        BeanUtils.copyProperties(source, target);
    }

    /**
     * 复制属性
     *
     * @param source           源对象
     * @param target           目标对象
     * @param ignoreProperties 忽略属性
     */
    public static void copyProperties(Object source, Object target, String... ignoreProperties) {
        BeanUtils.copyProperties(source, target, ignoreProperties);
    }

    /**
     * 转换对象
     *
     * @param source      源对象
     * @param targetClass 目标对象类型
     * @return 目标对象
     */
    public static <S, T> T convert(S source, Class<T> targetClass) {
        T target = BeanUtils.instantiateClass(targetClass);
        BeanUtils.copyProperties(source, target);
        return target;
    }

    /**
     * 转换对象
     *
     * @param source           源对象
     * @param targetClass      目标对象类型
     * @param ignoreProperties 忽略属性
     * @return 目标对象
     */
    public static <S, T> T convert(S source, Class<T> targetClass, String... ignoreProperties) {
        T target = BeanUtils.instantiateClass(targetClass);
        BeanUtils.copyProperties(source, target, ignoreProperties);
        return target;
    }
}
